/**
 * 对象的拦截
 get: function ()  当对象被调用时如：console.log(user.age)  get方法会被调用，并修改原有属性,将return后面的值赋给调用的属性
 set: function (newVal)  当对象被修改时如：user.age = '123'  set方法会被调用，并修改原有属性,将newVal的值赋给调用的属性
*/


user = {
    age: '123'
}
aa = user.age
Object.defineProperty(user, "age", {//监听的对象是user，监听的属性是age，{}中的将被定义或修改的属性描述符。
    get: function () {

        console.log("有人来取值了！！");
        
        return aa   // 如果不return，原先的属性就会被undefined掉
    },

    set: function (newVal) {
        console.log("这个人来设置值了！！");
        aa = newVal
    }
})
console.log(user.age)
user.age = '23342'
console.log(user.age)